home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 8 / The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO / g_quake / shockab.zip / HKNIGHT.QC < prev    next >
Text File  |  1996-10-09  |  23KB  |  461 lines

  1. /*
  2. ==============================================================================
  3.  
  4. KNIGHT
  5.  
  6. ==============================================================================
  7. */
  8.  
  9. $cd /raid/quake/id1/models/knight2
  10. $origin 0 0 24
  11. $base base
  12. $skin skin
  13.  
  14. $frame stand1 stand2 stand3 stand4 stand5 stand6 stand7 stand8 stand9
  15.  
  16. $frame walk1 walk2 walk3 walk4 walk5 walk6 walk7 walk8 walk9
  17. $frame walk10 walk11 walk12 walk13 walk14 walk15 walk16 walk17
  18. $frame walk18 walk19 walk20
  19.  
  20. $frame run1 run2 run3 run4 run5 run6 run7 run8
  21.  
  22. $frame pain1 pain2 pain3 pain4 pain5
  23.  
  24. $frame death1 death2 death3 death4 death5 death6 death7 death8
  25. $frame death9 death10 death11 death12
  26.  
  27. $frame deathb1 deathb2 deathb3 deathb4 deathb5 deathb6 deathb7 deathb8
  28. $frame deathb9
  29.  
  30. $frame char_a1 char_a2 char_a3 char_a4 char_a5 char_a6 char_a7 char_a8
  31. $frame char_a9 char_a10 char_a11 char_a12 char_a13 char_a14 char_a15 char_a16
  32.  
  33. $frame magica1 magica2 magica3 magica4 magica5 magica6 magica7 magica8
  34. $frame magica9 magica10 magica11 magica12 magica13 magica14
  35.  
  36. $frame magicb1 magicb2 magicb3 magicb4 magicb5 magicb6 magicb7 magicb8
  37. $frame magicb9 magicb10 magicb11 magicb12 magicb13
  38.  
  39. $frame char_b1 char_b2 char_b3 char_b4 char_b5 char_b6
  40.  
  41. $frame slice1 slice2 slice3 slice4 slice5 slice6 slice7 slice8 slice9 slice10
  42.  
  43. $frame smash1 smash2 smash3 smash4 smash5 smash6 smash7 smash8 smash9 smash10
  44. $frame smash11
  45.  
  46. $frame w_attack1 w_attack2 w_attack3 w_attack4 w_attack5 w_attack6 w_attack7 
  47. $frame w_attack8 w_attack9 w_attack10 w_attack11 w_attack12 w_attack13 w_attack14
  48. $frame w_attack15 w_attack16 w_attack17 w_attack18 w_attack19 w_attack20 
  49. $frame w_attack21 w_attack22 
  50.  
  51. $frame magicc1 magicc2 magicc3 magicc4 magicc5 magicc6 magicc7 magicc8
  52. $frame magicc9 magicc10 magicc11
  53.  
  54.  
  55. void() hknight_char_a1;
  56. void() hknight_run1;
  57. void() hk_idle_sound;
  58.  
  59. void(float offset) hknight_shot =
  60. {
  61.     local vector      offang;
  62.     local vector      org, vec;
  63.     
  64.     offang = vectoangles (self.enemy.origin - self.origin);
  65.     offang_y = offang_y + offset * 6;
  66.     
  67.     makevectors (offang);
  68.  
  69.     org = self.origin + self.mins + self.size*0.5 + v_forward * 20;
  70.  
  71. // set missile speed
  72.     vec = normalize (v_forward);
  73.     vec_z = 0 - vec_z + (random() - 0.5)*0.1;
  74.     
  75.     launch_spike (org, vec);
  76.     newmis.classname = "knightspike";
  77.     setmodel (newmis, "progs/k_spike.mdl");
  78.     setsize (newmis, VEC_ORIGIN, VEC_ORIGIN);       
  79.     newmis.velocity = vec*300;
  80.     sound (self, CHAN_WEAPON, "hknight/attack1.wav", 1, ATTN_NORM);
  81. };
  82.  
  83. void() CheckForCharge =
  84. {
  85. // check for mad charge
  86. if (!enemy_vis)
  87.     return;
  88. if (time < self.attack_finished)
  89.     return;     
  90. if ( fabs(self.origin_z - self.enemy.origin_z) > 20)
  91.     return;           // too much height change
  92. if ( vlen (self.origin - self.enemy.origin) < 80)
  93.     return;           // use regular attack
  94.  
  95. // charge         
  96.     SUB_AttackFinished (2);
  97.     hknight_char_a1 ();
  98.  
  99. };
  100.  
  101. void() CheckContinueCharge =
  102. {
  103.     if (time > self.attack_finished)
  104.     {
  105.         SUB_AttackFinished (3);
  106.         hknight_run1 ();
  107.         return;           // done charging
  108.     }
  109.     if (random() > 0.5)
  110.         sound (self, CHAN_WEAPON, "knight/sword2.wav", 1, ATTN_NORM);
  111.     else
  112.         sound (self, CHAN_WEAPON, "knight/sword1.wav", 1, ATTN_NORM);
  113. };
  114.  
  115. //===========================================================================
  116.  
  117. void()      hknight_stand1    =[    $stand1,    hknight_stand2    ] {ai_stand();};
  118. void()      hknight_stand2    =[    $stand2,    hknight_stand3    ] {ai_stand();};
  119. void()      hknight_stand3    =[    $stand3,    hknight_stand4    ] {ai_stand();};
  120. void()      hknight_stand4    =[    $stand4,    hknight_stand5    ] {ai_stand();};
  121. void()      hknight_stand5    =[    $stand5,    hknight_stand6    ] {ai_stand();};
  122. void()      hknight_stand6    =[    $stand6,    hknight_stand7    ] {ai_stand();};
  123. void()      hknight_stand7    =[    $stand7,    hknight_stand8    ] {ai_stand();};
  124. void()      hknight_stand8    =[    $stand8,    hknight_stand9    ] {ai_stand();};
  125. void()      hknight_stand9    =[    $stand9,    hknight_stand1    ] {ai_stand();};
  126.  
  127. //===========================================================================
  128.  
  129. void()      hknight_walk1     =[    $walk1,           hknight_walk2     ] {
  130. hk_idle_sound();
  131. ai_walk(2);};
  132. void()      hknight_walk2     =[    $walk2,           hknight_walk3     ] {ai_walk(5);};
  133. void()      hknight_walk3     =[    $walk3,           hknight_walk4     ] {ai_walk(5);};
  134. void()      hknight_walk4     =[    $walk4,           hknight_walk5     ] {ai_walk(4);};
  135. void()      hknight_walk5     =[    $walk5,           hknight_walk6     ] {ai_walk(4);};
  136. void()      hknight_walk6     =[    $walk6,           hknight_walk7     ] {ai_walk(2);};
  137. void()      hknight_walk7     =[    $walk7,           hknight_walk8     ] {ai_walk(2);};
  138. void()      hknight_walk8     =[    $walk8,           hknight_walk9     ] {ai_walk(3);};
  139. void()      hknight_walk9     =[    $walk9,           hknight_walk10    ] {ai_walk(3);};
  140. void()      hknight_walk10    =[    $walk10,    hknight_walk11    ] {ai_walk(4);};
  141. void()      hknight_walk11    =[    $walk11,    hknight_walk12    ] {ai_walk(3);};
  142. void()      hknight_walk12    =[    $walk12,    hknight_walk13    ] {ai_walk(4);};
  143. void()      hknight_walk13    =[    $walk13,    hknight_walk14    ] {ai_walk(6);};
  144. void()      hknight_walk14    =[    $walk14,    hknight_walk15    ] {ai_walk(2);};
  145. void()      hknight_walk15    =[    $walk15,    hknight_walk16    ] {ai_walk(2);};
  146. void()      hknight_walk16    =[    $walk16,    hknight_walk17    ] {ai_walk(4);};
  147. void()      hknight_walk17    =[    $walk17,    hknight_walk18    ] {ai_walk(3);};
  148. void()      hknight_walk18    =[    $walk18,    hknight_walk19    ] {ai_walk(3);};
  149. void()      hknight_walk19    =[    $walk19,    hknight_walk20    ] {ai_walk(3);};
  150. void()      hknight_walk20    =[    $walk20,    hknight_walk1     ] {ai_walk(2);};
  151.  
  152. //===========================================================================
  153.  
  154. void()      hknight_run1      =[    $run1,            hknight_run2      ] {
  155. hk_idle_sound();
  156. ai_run (20); CheckForCharge (); };
  157. void()      hknight_run2      =[    $run2,            hknight_run3      ] {ai_run(25);};
  158. void()      hknight_run3      =[    $run3,            hknight_run4      ] {ai_run(18);};
  159. void()      hknight_run4      =[    $run4,            hknight_run5      ] {ai_run(16);};
  160. void()      hknight_run5      =[    $run5,            hknight_run6      ] {ai_run(14);};
  161. void()      hknight_run6      =[    $run6,            hknight_run7      ] {ai_run(25);};
  162. void()      hknight_run7      =[    $run7,            hknight_run8      ] {ai_run(21);};
  163. void()      hknight_run8      =[    $run8,            hknight_run1      ] {ai_run(13);};
  164.  
  165. //============================================================================
  166.  
  167. void()      hknight_pain1     =[    $pain1,           hknight_pain2     ] {sound (self, CHAN_VOICE, "hknight/pain1.wav", 1, ATTN_NORM);};
  168. void()      hknight_pain2     =[    $pain2,           hknight_pain3     ] {};
  169. void()      hknight_pain3     =[    $pain3,           hknight_pain4     ] {};
  170. void()      hknight_pain4     =[    $pain4,           hknight_pain5     ] {};
  171. void()      hknight_pain5     =[    $pain5,           hknight_run1      ] {};
  172.  
  173. //============================================================================
  174.  
  175. void()      hknight_die1      =[    $death1,    hknight_die2      ] {ai_forward(10);};
  176. void()      hknight_die2      =[    $death2,    hknight_die3      ] {ai_forward(8);};
  177. void()      hknight_die3      =[    $death3,    hknight_die4      ]
  178. {self.solid = SOLID_NOT; ai_forward(7);};
  179. void()      hknight_die4      =[    $death4,    hknight_die5      ] {};
  180. void()      hknight_die5      =[    $death5,    hknight_die6      ] {};
  181. void()      hknight_die6      =[    $death6,    hknight_die7      ] {};
  182. void()      hknight_die7      =[    $death7,    hknight_die8      ] {};
  183. void()      hknight_die8      =[    $death8,    hknight_die9      ] {ai_forward(10);};
  184. void()      hknight_die9      =[    $death9,    hknight_die10     ] {ai_forward(11);};
  185. void()      hknight_die10     =[    $death10,   hknight_die11     ] {};
  186. void()      hknight_die11     =[    $death11,   hknight_die12     ] {};
  187. void()      hknight_die12     =[    $death12,   hknight_die12     ] {};
  188.  
  189. void()      hknight_dieb1     =[    $deathb1,   hknight_dieb2     ] {};
  190. void()      hknight_dieb2     =[    $deathb2,   hknight_dieb3     ] {};
  191. void()      hknight_dieb3     =[    $deathb3,   hknight_dieb4     ]
  192. {self.solid = SOLID_NOT;};
  193. void()      hknight_dieb4     =[    $deathb4,   hknight_dieb5     ] {};
  194. void()      hknight_dieb5     =[    $deathb5,   hknight_dieb6     ] {};
  195. void()      hknight_dieb6     =[    $deathb6,   hknight_dieb7     ] {};
  196. void()      hknight_dieb7     =[    $deathb7,   hknight_dieb8     ] {};
  197. void()      hknight_dieb8     =[    $deathb8,   hknight_dieb9     ] {};
  198. void()      hknight_dieb9     =[    $deathb9,   hknight_dieb9     ] {};
  199.  
  200. void()      hknight_fly1      =[    $deathb1,    hknight_fly2      ] {
  201.     sound (self, CHAN_VOICE, "hknight/pain1.wav", 1, ATTN_NORM);
  202.     self.velocity = self.velocity * 0.5;
  203. };
  204. void()      hknight_fly2      =[    $deathb2,    hknight_fly3      ] {};
  205. void()      hknight_fly3      =[    $deathb3,    hknight_fly4      ] {};
  206. void()      hknight_fly4      =[    $deathb4,    hknight_fly5      ] {};
  207. void()      hknight_fly5      =[    $deathb5,    hknight_fly6      ] {};
  208. void()      hknight_fly6      =[    $deathb6,    hknight_fly7      ] {};
  209. void()      hknight_fly7      =[    $deathb7,    hknight_fly8      ] {};
  210. void()      hknight_fly8      =[    $deathb8,    hknight_fly9      ] {};
  211. void()      hknight_fly9      =[    $deathb9,    hknight_fly10     ] {self.nextthink = time + 0.2;};
  212. void()      hknight_fly10     =[    $deathb8,   hknight_fly11     ] {};
  213. void()      hknight_fly11     =[    $deathb6,   hknight_fly12     ] {};
  214. void()      hknight_fly12     =[    $deathb4,   hknight_fly13     ] {};
  215. void()      hknight_fly13     =[    $deathb2,   hknight_fly14     ] {};
  216. void()      hknight_fly14     =[    $deathb1 ,   hknight_run1     ] {};
  217.  
  218. void() hknight_die =
  219. {
  220. // check for gib
  221.     if (self.health < -40)
  222.     {
  223.         sound (self, CHAN_VOICE, "player/udeath.wav", 1, ATTN_NORM);
  224.         ThrowHead ("progs/h_hellkn.mdl", self.health);
  225.         ThrowGib ("progs/gib1.mdl", self.health);
  226.         ThrowGib ("progs/gib2.mdl", self.health);
  227.         ThrowGib ("progs/gib3.mdl", self.health);
  228.         return;
  229.     }
  230.  
  231. // regular death
  232.     sound (self, CHAN_VOICE, "hknight/death1.wav", 1, ATTN_NORM);
  233.     if (random() > 0.5)
  234.         hknight_die1 ();
  235.     else
  236.         hknight_dieb1 ();
  237. };
  238.  
  239.  
  240. //============================================================================
  241.  
  242. void()      hknight_magica1 =[      $magica1,   hknight_magica2   ] {ai_face();};
  243. void()      hknight_magica2 =[      $magica2,   hknight_magica3   ] {ai_face();};
  244. void()      hknight_magica3 =[      $magica3,   hknight_magica4   ] {ai_face();};
  245. void()      hknight_magica4 =[      $magica4,   hknight_magica5   ] {ai_face();};
  246. void()      hknight_magica5 =[      $magica5,   hknight_magica6   ] {ai_face();};
  247. void()      hknight_magica6 =[      $magica6,   hknight_magica7   ] {ai_face();};
  248. void()      hknight_magica7 =[      $magica7,   hknight_magica8   ] {hknight_shot(-2);};
  249. void()      hknight_magica8 =[      $magica8,   hknight_magica9   ] {hknight_shot(-1);};
  250. void()      hknight_magica9 =[      $magica9,   hknight_magica10] {hknight_shot(0);};
  251. void()      hknight_magica10 =[     $magica10,  hknight_magica11] {hknight_shot(1);};
  252. void()      hknight_magica11 =[     $magica11,  hknight_magica12] {hknight_shot(2);};
  253. void()      hknight_magica12 =[     $magica12,  hknight_magica13] {hknight_shot(3);};
  254. void()      hknight_magica13 =[     $magica13,  hknight_magica14] {ai_face();};
  255. void()      hknight_magica14 =[     $magica14,  hknight_run1      ] {ai_face();};
  256.  
  257. //============================================================================
  258.  
  259. void()      hknight_magicb1 =[      $magicb1,   hknight_magicb2   ] {ai_face();};
  260. void()      hknight_magicb2 =[      $magicb2,   hknight_magicb3   ] {ai_face();};
  261. void()      hknight_magicb3 =[      $magicb3,   hknight_magicb4   ] {ai_face();};
  262. void()      hknight_magicb4 =[      $magicb4,   hknight_magicb5   ] {ai_face();};
  263. void()      hknight_magicb5 =[      $magicb5,   hknight_magicb6   ] {ai_face();};
  264. void()      hknight_magicb6 =[      $magicb6,   hknight_magicb7   ] {ai_face();};
  265. void()      hknight_magicb7 =[      $magicb7,   hknight_magicb8   ] {hknight_shot(-2);};
  266. void()      hknight_magicb8 =[      $magicb8,   hknight_magicb9   ] {hknight_shot(-1);};
  267. void()      hknight_magicb9 =[      $magicb9,   hknight_magicb10] {hknight_shot(0);};
  268. void()      hknight_magicb10 =[     $magicb10,  hknight_magicb11] {hknight_shot(1);};
  269. void()      hknight_magicb11 =[     $magicb11,  hknight_magicb12] {hknight_shot(2);};
  270. void()      hknight_magicb12 =[     $magicb12,  hknight_magicb13] {hknight_shot(3);};
  271. void()      hknight_magicb13 =[     $magicb13,  hknight_run1] {ai_face();};
  272.  
  273. //============================================================================
  274.  
  275. void()      hknight_magicc1 =[      $magicc1,   hknight_magicc2   ] {ai_face();};
  276. void()      hknight_magicc2 =[      $magicc2,   hknight_magicc3   ] {ai_face();};
  277. void()      hknight_magicc3 =[      $magicc3,   hknight_magicc4   ] {ai_face();};
  278. void()      hknight_magicc4 =[      $magicc4,   hknight_magicc5   ] {ai_face();};
  279. void()      hknight_magicc5 =[      $magicc5,   hknight_magicc6   ] {ai_face();};
  280. void()      hknight_magicc6 =[      $magicc6,   hknight_magicc7   ] {hknight_shot(-2);};
  281. void()      hknight_magicc7 =[      $magicc7,   hknight_magicc8   ] {hknight_shot(-1);};
  282. void()      hknight_magicc8 =[      $magicc8,   hknight_magicc9   ] {hknight_shot(0);};
  283. void()      hknight_magicc9 =[      $magicc9,   hknight_magicc10] {hknight_shot(1);};
  284. void()      hknight_magicc10 =[     $magicc10,  hknight_magicc11] {hknight_shot(2);};
  285. void()      hknight_magicc11 =[     $magicc11,  hknight_run1] {hknight_shot(3);};
  286.  
  287. //===========================================================================
  288.  
  289. void()      hknight_char_a1   =[    $char_a1,   hknight_char_a2   ] {ai_charge(20);};
  290. void()      hknight_char_a2   =[    $char_a2,   hknight_char_a3   ] {ai_charge(25);};
  291. void()      hknight_char_a3   =[    $char_a3,   hknight_char_a4   ] {ai_charge(18);};
  292. void()      hknight_char_a4   =[    $char_a4,   hknight_char_a5   ] {ai_charge(16);};
  293. void()      hknight_char_a5   =[    $char_a5,   hknight_char_a6   ] {ai_charge(14);};
  294. void()      hknight_char_a6   =[    $char_a6,   hknight_char_a7   ] {ai_charge(20); ai_melee();};
  295. void()      hknight_char_a7   =[    $char_a7,   hknight_char_a8   ] {ai_charge(21); ai_melee();};
  296. void()      hknight_char_a8   =[    $char_a8,   hknight_char_a9   ] {ai_charge(13); ai_melee();};
  297. void()      hknight_char_a9   =[    $char_a9,   hknight_char_a10  ] {ai_charge(20); ai_melee();};
  298. void()      hknight_char_a10=[      $char_a10,  hknight_char_a11  ] {ai_charge(20); ai_melee();};
  299. void()      hknight_char_a11=[      $char_a11,  hknight_char_a12  ] {ai_charge(18); ai_melee();};
  300. void()      hknight_char_a12=[      $char_a12,  hknight_char_a13  ] {ai_charge(16);};
  301. void()      hknight_char_a13=[      $char_a13,  hknight_char_a14  ] {ai_charge(14);};
  302. void()      hknight_char_a14=[      $char_a14,  hknight_char_a15  ] {ai_charge(25);};
  303. void()      hknight_char_a15=[      $char_a15,  hknight_char_a16  ] {ai_charge(21);};
  304. void()      hknight_char_a16=[      $char_a16,  hknight_run1      ] {ai_charge(13);};
  305.  
  306. //===========================================================================
  307.  
  308. void()      hknight_char_b1   =[    $char_b1,   hknight_char_b2   ]
  309. {CheckContinueCharge (); ai_charge(23); ai_melee();};
  310. void()      hknight_char_b2   =[    $char_b2,   hknight_char_b3   ] {ai_charge(17); ai_melee();};
  311. void()      hknight_char_b3   =[    $char_b3,   hknight_char_b4   ] {ai_charge(12); ai_melee();};
  312. void()      hknight_char_b4   =[    $char_b4,   hknight_char_b5   ] {ai_charge(22); ai_melee();};
  313. void()      hknight_char_b5   =[    $char_b5,   hknight_char_b6   ] {ai_charge(18); ai_melee();};
  314. void()      hknight_char_b6   =[    $char_b6,   hknight_char_b1   ] {ai_charge(8); ai_melee();};
  315.  
  316. //===========================================================================
  317.  
  318. void()      hknight_slice1    =[    $slice1,    hknight_slice2    ] {ai_charge(9);};
  319. void()      hknight_slice2    =[    $slice2,    hknight_slice3    ] {ai_charge(6);};
  320. void()      hknight_slice3    =[    $slice3,    hknight_slice4    ] {ai_charge(13);};
  321. void()      hknight_slice4    =[    $slice4,    hknight_slice5    ] {ai_charge(4);};
  322. void()      hknight_slice5    =[    $slice5,    hknight_slice6    ] {ai_charge(7); ai_melee();};
  323. void()      hknight_slice6    =[    $slice6,    hknight_slice7    ] {ai_charge(15); ai_melee();};
  324. void()      hknight_slice7    =[    $slice7,    hknight_slice8    ] {ai_charge(8); ai_melee();};
  325. void()      hknight_slice8    =[    $slice8,    hknight_slice9    ] {ai_charge(2); ai_melee();};
  326. void()      hknight_slice9    =[    $slice9,    hknight_slice10   ] {ai_melee();};
  327. void()      hknight_slice10   =[    $slice10,   hknight_run1      ] {ai_charge(3);};
  328.  
  329. //===========================================================================
  330.  
  331. void()      hknight_smash1    =[    $smash1,    hknight_smash2    ] {ai_charge(1);};
  332. void()      hknight_smash2    =[    $smash2,    hknight_smash3    ] {ai_charge(13);};
  333. void()      hknight_smash3    =[    $smash3,    hknight_smash4    ] {ai_charge(9);};
  334. void()      hknight_smash4    =[    $smash4,    hknight_smash5    ] {ai_charge(11);};
  335. void()      hknight_smash5    =[    $smash5,    hknight_smash6    ] {ai_charge(10); ai_melee();};
  336. void()      hknight_smash6    =[    $smash6,    hknight_smash7    ] {ai_charge(7); ai_melee();};
  337. void()      hknight_smash7    =[    $smash7,    hknight_smash8    ] {ai_charge(12); ai_melee();};
  338. void()      hknight_smash8    =[    $smash8,    hknight_smash9    ] {ai_charge(2); ai_melee();};
  339. void()      hknight_smash9    =[    $smash9,    hknight_smash10   ] {ai_charge(3); ai_melee();};
  340. void()      hknight_smash10   =[    $smash10,   hknight_smash11   ] {ai_charge(0);};
  341. void()      hknight_smash11   =[    $smash11,   hknight_run1      ] {ai_charge(0);};
  342.  
  343. //============================================================================
  344.  
  345. void()      hknight_watk1     =[    $w_attack1, hknight_watk2     ] {ai_charge(2);};
  346. void()      hknight_watk2     =[    $w_attack2, hknight_watk3     ] {ai_charge(0);};
  347. void()      hknight_watk3     =[    $w_attack3, hknight_watk4     ] {ai_charge(0);};
  348. void()      hknight_watk4     =[    $w_attack4, hknight_watk5     ] {ai_melee();};
  349. void()      hknight_watk5     =[    $w_attack5, hknight_watk6     ] {ai_melee();};
  350. void()      hknight_watk6     =[    $w_attack6, hknight_watk7     ] {ai_melee();};
  351. void()      hknight_watk7     =[    $w_attack7, hknight_watk8     ] {ai_charge(1);};
  352. void()      hknight_watk8     =[    $w_attack8, hknight_watk9     ] {ai_charge(4);};
  353. void()      hknight_watk9     =[    $w_attack9, hknight_watk10    ] {ai_charge(5);};
  354. void()      hknight_watk10    =[    $w_attack10,      hknight_watk11    ] {ai_charge(3); ai_melee();};
  355. void()      hknight_watk11    =[    $w_attack11,      hknight_watk12    ] {ai_charge(2); ai_melee();};
  356. void()      hknight_watk12    =[    $w_attack12,      hknight_watk13    ] {ai_charge(2); ai_melee();};
  357. void()      hknight_watk13    =[    $w_attack13,      hknight_watk14    ] {ai_charge(0);};
  358. void()      hknight_watk14    =[    $w_attack14,      hknight_watk15    ] {ai_charge(0);};
  359. void()      hknight_watk15    =[    $w_attack15,      hknight_watk16    ] {ai_charge(0);};
  360. void()      hknight_watk16    =[    $w_attack16,      hknight_watk17    ] {ai_charge(1);};
  361. void()      hknight_watk17    =[    $w_attack17,      hknight_watk18    ] {ai_charge(1); ai_melee();};
  362. void()      hknight_watk18    =[    $w_attack18,      hknight_watk19    ] {ai_charge(3); ai_melee();};
  363. void()      hknight_watk19    =[    $w_attack19,      hknight_watk20    ] {ai_charge(4); ai_melee();};
  364. void()      hknight_watk20    =[    $w_attack20,      hknight_watk21    ] {ai_charge(6);};
  365. void()      hknight_watk21    =[    $w_attack21,      hknight_watk22    ] {ai_charge(7);};
  366. void()      hknight_watk22    =[    $w_attack22,      hknight_run1      ] {ai_charge(3);};
  367.  
  368. //============================================================================
  369.  
  370. void() hk_idle_sound =
  371. {
  372.     if (random() < 0.2)
  373.         sound (self, CHAN_VOICE, "hknight/idle.wav", 1, ATTN_NORM);
  374. };
  375.  
  376. void(entity attacker, float damage) hknight_pain =
  377. {
  378.     if (self.pain_finished > time)
  379.         return;
  380.  
  381.     sound (self, CHAN_VOICE, "hknight/pain1.wav", 1, ATTN_NORM);
  382.  
  383.     if (time - self.pain_finished > 5)
  384.     {     // allways go into pain frame if it has been a while
  385.         hknight_pain1 ();
  386.         self.pain_finished = time + 1;
  387.         return;
  388.     }
  389.     
  390.     if ((random()*30 > damage) )
  391.         return;           // didn't flinch
  392.  
  393.     self.pain_finished = time + 1;
  394.     hknight_pain1 ();
  395. };
  396.  
  397. float hknight_type;
  398.  
  399. void() hknight_melee =
  400. {
  401.     hknight_type = hknight_type + 1;
  402.  
  403.     sound (self, CHAN_WEAPON, "hknight/slash1.wav", 1, ATTN_NORM);
  404.     if (hknight_type == 1)
  405.         hknight_slice1 ();
  406.     else if (hknight_type == 2)
  407.         hknight_smash1 ();
  408.     else if (hknight_type == 3)
  409.     {
  410.         hknight_watk1 ();
  411.         hknight_type = 0;
  412.     }
  413. };
  414.  
  415. /*QUAKED monster_hell_knight (1 0 0) (-16 -16 -24) (16 16 40) Ambush
  416. */
  417. void() monster_hell_knight =
  418. {
  419.     if (deathmatch)
  420.     {
  421.         remove(self);
  422.         return;
  423.     }
  424.     precache_model2 ("progs/hknight.mdl");
  425.     precache_model2 ("progs/k_spike.mdl");
  426.     precache_model2 ("progs/h_hellkn.mdl");
  427.  
  428.     
  429.     precache_sound2 ("hknight/attack1.wav");
  430.     precache_sound2 ("hknight/death1.wav");
  431.     precache_sound2 ("hknight/pain1.wav");
  432.     precache_sound2 ("hknight/sight1.wav");
  433.     precache_sound ("hknight/hit.wav");       // used by C code, so don't sound2
  434.     precache_sound2 ("hknight/slash1.wav");
  435.     precache_sound2 ("hknight/idle.wav");
  436.     precache_sound2 ("hknight/grunt.wav");
  437.  
  438.     precache_sound ("knight/sword1.wav");
  439.     precache_sound ("knight/sword2.wav");
  440.     
  441.     self.solid = SOLID_SLIDEBOX;
  442.     self.movetype = MOVETYPE_STEP;
  443.  
  444.     setmodel (self, "progs/hknight.mdl");
  445.  
  446.     setsize (self, '-16 -16 -24', '16 16 40');
  447.     self.health = 250;
  448.  
  449.     self.th_stand = hknight_stand1;
  450.     self.th_walk = hknight_walk1;
  451.     self.th_run = hknight_run1;
  452.     self.th_melee = hknight_melee;
  453.     self.th_missile = hknight_magicc1;
  454.     self.th_pain = hknight_pain;
  455.     self.th_die = hknight_die;
  456.     
  457.     self.CanBeShocked = TRUE;
  458.  
  459.     walkmonster_start ();
  460. };
  461.